"""
无向图 图是若干个顶点(Vertices)和边(Edges)相互连接组成的。
边仅由两个顶点连接，并且没有方向的图称为无向图
"""


class Graph(object):
    def __init__(self):
        self.nodes = []
        self.edge = {}

    def insert(self, a, b):
        # 如果a不在图的点集里，添加a
        if not (a in self.nodes):
            self.nodes.append(a)
            self.edge[a] = list()

        # 如果b不在图的点集里，添加b
        if not (b in self.nodes):
            self.nodes.append(b)
            self.edge[b] = list()

        self.edge[a].append(b)  # a连接b
        self.edge[b].append(a)  # b连接a

    def succ(self, a):
        # 返回与a连接的点
        return self.edge[a]

    def show_nodes(self):
        # 返回图的点集
        return self.nodes

    def show_edge(self):
        print(self.edge)


graph = Graph()
graph.insert('0', '1')
graph.insert('0', '2')
graph.insert('0', '3')
graph.insert('1', '3')
graph.insert('2', '3')
graph.show_edge()
